import time

from DrissionPage._pages.chromium_tab import ChromiumTab
from DrissionPage.common import Actions
from DrissionPage.errors import *

import common.risk.cloudflare as cloudflare
import lib.utils.log_loader as log_loader
import business.pre_crawling.check_chatgpt as check_chatgpt
from common.data.element_selectors import PROMPT_TEXTAREA_SELECTOR


def get_page(tab: ChromiumTab):
    """
    载入chatgpt页面。

    :param tab: ChromiumTab对象，代表一个浏览器页面。
    :return: bool。函数成功执行返回True。
    """

    # 初始化日志记录器
    logger = log_loader.get_logger()

    # 创建动作对象，用于对页面元素进行操作
    ac = Actions(tab)

    # 点击Cloudflare的复选框以通过其反机器人检查
    # logger.debug('检查是否是Cloudflare的验证页面')
    cloudflare.checkbox_click(tab)

    ele = None

    # 设置超时时间
    start_time = time.time()
    timeout = 120  # seconds

    # 循环直到找到元素或超时
    while not ele and time.time() - start_time < timeout:
        try:
            # logger.debug("定位是否是聊天窗口")
            ret = check_chatgpt.is_chat_page(tab)
            if ret:
                break
            else:
                # 如果未找到聊天窗口，尝试点击Cloudflare复选框以重新进行验证
                # logger.debug(f"查找cloudflare真人验证提示框")
                cloudflare.checkbox_click(tab)
        except ElementNotFoundError:
            cloudflare.checkbox_click(tab)  # 如果未找到元素，尝试绕过 Cloudflare
        except Exception as e:
            logger.error(f"错误查找元素: {e}")

    if not ele:
        # logger.error("未找到元素或未在超时内绕过 Cloudflare 质询。")
        pass

    return True
